#include <iostream>
#include <future>
#include <thread>
#include <memory>
int Add(int num1, int num2)
{
    return num1 + num2;
}


int main()
{
    // 1.实例化一个promise对象
    std::promise<int> pro;
    // 2.通过promise对象, 获取关联的future对象
    std::future<int> res = pro.get_future();
    // 3.在任意位置给promise设置数据, 通过关联得future获取数据
    // 
    std::thread td([&pro]()
    {
        int sum = Add(11,22);
        pro.set_value(sum);
    });

    std::cout << res.get() << std::endl;
    td.join();
    return 0;
}

// g++ promise.cpp -o promise -pthread -std=c++11